<?php

/**
 * This is the model class for table "tbl_counters".
 *
 * The followings are the available columns in table 'tbl_counters':
 * @property string $countername
 * @property string $nextnumber
 * @property string $desciprtion
 */
class Counters extends CanLockRecord {

    public function getCounterNameText() {
        return isset($this->CounterNameList[$this->countername]) ? $this->CounterNameList[$this->countername] : NULL;
    }
    
  
    public function getNextNumber($type){
     
            
            $counter=$this->find('countername=:name',array('name'=>$type));
            if($counter==NULL){
                Yii::app()->db->createCommand()->insert('tbl_counters', array(
                    'countername'=>$type,
                    'nextnumber'=>'001'
                ));
               
                return '001';
            }else{
                return $counter['nextnumber'];
            }
            
      
        
    }
    
    public function saveNumber($type,$number=NULL){
        if($number==NULL){
        
                $nextNumber=Yii::app()->db->createCommand('select nextnumber from tbl_counters where countername=:type')->bindValue('type', $type)->queryScalar();

                $max=Yii::app()->db->createCommand('select max(cast(nextnumber as unsigned)) from tbl_counters where countername=:type')->bindValue('type', $type)->queryScalar();

                $result=str_pad($max+1, strlen($nextNumber)  , '0',STR_PAD_LEFT);
              
                return $this->updateAll(array('nextnumber'=>$result), 'countername=:type', array('type'=>$type));
                
       
        }else{
    
            return $this->updateAll(array('nextnumber'=>$number), 'countername=:type', array('type'=>$type));
            
        }
    }
    /**
     * Returns the static model of the specified AR class.
     * @return Counters the static model class
     */
    public static function model($className=__CLASS__) {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName() {
        return 'tbl_counters';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules() {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('countername, nextnumber', 'required'),
            array('countername', 'length', 'max' => 150),
            array('nextnumber', 'length', 'max' => 25),
            array('desciprtion', 'safe'),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('countername, nextnumber, desciprtion', 'safe', 'on' => 'search'),
        );
    }

    /**
     * @return array relational rules.
     */
    public function relations() {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
        );
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'countername' => 'Counter Name',
            'nextnumber' => 'Next Number',
            'desciprtion' => 'Desciption',
        );
    }

    /**
     * Retrieves a list of models based on the current search/filter conditions.
     * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
     */
    public function search() {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.

        $criteria = new CDbCriteria;

        $criteria->compare('countername', $this->countername, true);
        $criteria->compare('nextnumber', $this->nextnumber, true);
        $criteria->compare('desciprtion', $this->desciprtion, true);

        return new CActiveDataProvider($this, array(
                    'criteria' => $criteria,
                ));
    }

}